﻿Imports CapaLogica
Imports CapaLogica.CL.UtilidadesGenerales
Imports CapaLogica.CL.Carrera
Imports CapaLogica.CL.Usuario

Public Class frmConsultarCarrera

    Private _id As Int32
    Private _codigo As String
    Private _nombre As String
    Private _descripcion As String
    Private _idDirector As Int32
    Private _idViejo As Int32


    Private Sub frmConsultarCarrera_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        cargarDatos()
        cargarCursos()
        cargarCursosAsociados()
        cargarDirectoresAcademicos(_idDirector)
        eliminarElementosRepetidos(lbxSeleccionados, lbxCursos)
    End Sub


    Private Sub btnGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGuardar.Click
        Try
            If validar() Then
                Dim mensaje As String
                mensaje = "¿Desea modificar la carrera?"
                Dim button As DialogResult = MessageBox.Show(mensaje, "Usuario", MessageBoxButtons.YesNoCancel,
                                                             MessageBoxIcon.Warning)


                Dim listaC As New List(Of Int32)
                Dim id As Int32 = 0



                If cmbDirector.SelectedIndex > 0 Then
                    id = obtenerIdComboBox(cmbDirector)
                End If

                listaC = obtenerIdsDeListBox(lbxCursos)
                If button = DialogResult.Yes Then

                    GestorCarrera.modificarCarrera(_id, txtCodigo.Text, txtNombre.Text, txtDescripcion.Text, listaC, id, _idViejo)

                    MsgBox("La carrera se ha modificado con éxito.")
                    Me.Dispose()

                Else
                    MsgBox("No se ha modificado la carrera.")

                End If
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try


        
    End Sub

    Private Function validar() As Boolean
        Dim result As Boolean
        result = True
        Dim mensaje As String
        mensaje = ""

        If (txtNombre.Text = Nothing) Then
            mensaje += "Debe de ingresar el nombre de la carrera" + vbCrLf
            result = False
        End If
        If (txtCodigo.Text = Nothing) Then
            mensaje += "Debe de ingresar el codigo de la carrera" + vbCrLf
            result = False
        End If

        If (txtDescripcion.Text = Nothing) Then
            mensaje += "Debe de ingresar la descripción de la carrera" + vbCrLf
            result = False
        End If

        If (cmbDirector.SelectedIndex = 0) Then
            mensaje += "Debe de seleccionar el Director Académico de la carrera" + vbCrLf
            result = False
        End If


        If result = False Then
            MessageBox.Show(mensaje, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If

        Return result
    End Function

    Public Sub New(ByVal id As Int32, ByVal codigo As String, ByVal nombre As String, ByVal descripcion As String, ByVal pidDirAcademico As Int32)

        InitializeComponent()
        _id = id
        _codigo = codigo
        _nombre = nombre
        _descripcion = descripcion
        _idDirector = pidDirAcademico
        _idViejo = pidDirAcademico
      
    End Sub

    Public Sub cargarDatos()
        txtCodigo.Text = _codigo
        txtNombre.Text = _nombre
        txtDescripcion.Text = _descripcion


    End Sub

    Public Sub cargarCursos()

        setearLista(lbxSeleccionados)

        Dim list As List(Of Informacion)

        list = GestorCurso.listarTodosLosCursos()

        For Each curso As EsCurso In list
            lbxSeleccionados.Items.Add(curso)
        Next


    End Sub


    Public Sub cargarDirectoresAcademicos(ByVal pidDirAcademico As Int32)
        llenarComoBox(cmbDirector, GestorUsuario.listarDirectoresAcademicos(), "--Seleccione el Director Académico--")

        Dim i As Integer
        Dim index As Integer = 0
        Dim objItem As Informacion


        For i = 1 To cmbDirector.Items.Count - 1
            objItem = cmbDirector.Items(i)

            If CInt(objItem.IdInfo) = pidDirAcademico Then
                index = i
                ''Sale del ciclo
                i = cmbDirector.Items.Count - 1
            End If
        Next i
        cmbDirector.SelectedIndex = index

        '' _idViejo = index


    End Sub

    Public Sub cargarCursosAsociados()
        setearLista(lbxCursos)

        Dim list As List(Of Informacion)
        list = GestorCurso.buscarCursosAsociadosCarrera(_id)

        For Each curso As Informacion In list
            lbxCursos.Items.Add(curso)
        Next

    End Sub


    Private Sub btnAsociarCarreraCurso_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAsociar.Click
        cambiarElementosDeListas(lbxSeleccionados, lbxCursos)
    End Sub

    Private Sub btnDesasociarCarreraCurso_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDesasociar.Click
        cambiarElementosDeListas(lbxCursos, lbxSeleccionados)
    End Sub


    Private Sub btnAtras_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim mensaje As String
        mensaje = "¿Desea salir de la la consulta?"
        Dim button As DialogResult = MessageBox.Show(mensaje, "Usuario", MessageBoxButtons.YesNoCancel,
                                                     MessageBoxIcon.Warning)

        If button = DialogResult.Yes Then
            Me.Dispose()

        End If
    End Sub


    Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click
        Me.Dispose()
    End Sub
End Class